包名 net.yzjlb.sai.snippet

@输出名("snippet")
类 代码片段
	@静态
	变量 网址 : 文本 = "http://sai.yzjlb.net/tiecode/index.php"
	变量 操作 : 网络工具
	@隐藏
	变量 数据 : 集合
	@隐藏
	变量 数据_过滤 : 集合
	@隐藏
	变量 过滤 : 文本
	
	//用户系统
	变量 用户 : 用户系统
	方法 设置用户(user : 用户系统)
		用户 = user
	结束 方法
	
	//清空已有数据
	方法 清空数据()
		数据.清空()
	结束 方法
	
	//重新查询数据：清空原有数据
	方法 重新查询()
		清空数据()
		查询数据()
	结束 方法
	
	//取数据集合
	方法 取数据集合() : 集合
		变量 i : 整数
		数据_过滤.清空()
		循环(i, 0, 数据.长度)
			变量 item : 片段数据 = 数据.取成员(i) : 片段数据
			如果 (item.标题 ? 过滤) 且 (item.注释 ? 过滤) 则
				数据_过滤.添加成员(数据.取成员(i))
			否则 
				如果 (item.标题 ? 过滤) 则
					数据_过滤.添加成员(数据.取成员(i))
				结束 如果
				
				如果 (item.注释 ? 过滤) 则
					数据_过滤.添加成员(数据.取成员(i))
				结束 如果
			结束 如果
		结束 循环
		返回 数据_过滤
	结束 方法
	
	//过滤数据，用来实现搜索功能
	方法 过滤数据(关键字 : 文本)
		过滤 = 关键字
	结束 方法
	
	//查询数据：添加到已有数据末尾
	方法 查询数据()
		变量 操作 : 网络工具
		操作.取网页源码(网址 + "?action=query")
		
		事件 操作:取网页源码结束(结果 : 文本, 内容 : 字节[], cookie : 文本)
			变量 i : 整数
			变量 json : JSON数组 = 结果
			循环(i, 0, json.长度)
				变量 item : 片段数据 = json.取JSON对象(i)
				数据.添加成员(item)
				数据_过滤.添加成员(item)
			结束 循环
			查询结果(真, 数据)
		结束 事件
		
		事件 操作:取网页源码失败()
			变量 数据 : 集合
			数据.添加成员(-1)
			查询结果(假, 数据)
		结束 事件	 
	结束 方法
	
	//插入数据：向服务器插入一条数据
	方法 插入数据(标题 : 文本, 注释 : 文本, 内容 : 文本)
		变量 json : JSON对象
		json.置入("title", 标题)
		json.置入("info", 注释)
		json.置入("code", 内容)
		变量 数据 : 文本 = Base64工具.Base64编码(json.到文本())
		
		变量 操作 : 网络工具
		操作.发送数据(网址, "action=insert&data=" + 数据 + "&token=" + 用户.句柄)
		事件 操作:发送数据结束(结果 : 文本, 字 : 字节[], cookie : 文本)
			插入结果(真, 结果)
		结束 事件
		
		事件 操作:发送数据失败()
			插入结果(假, "失败")
		结束 事件
	结束 方法
	
	//文本转json，方便插入
	@静态
	方法 取JSON(标题 : 文本, 注释 : 文本, 内容 : 文本) : JSON对象
		变量 json : JSON对象
		json.置入("title", 标题)
		json.置入("info", 注释)
		json.置入("code", 内容)
		返回 json
	结束 方法
	
	//插入JSON：向服务器插入一条json数据
	方法 插入JSON(json : JSON对象)
		插入数据(json.取文本("title"), json.取文本("info"), json.取文本("code"))
	结束 方法
	
	//取索引处数据
	@运算符重载
	方法 [](索引 : 整数) : 片段数据
		返回 取数据集合().取成员(索引) : 片段数据
	结束 方法
	
	定义事件 查询结果(响应码 : 逻辑型, 结果 : 集合)
	定义事件 插入结果(响应码 : 逻辑型, 结果 : 文本)
结束 类



类 用户系统
	变量 名字 : 文本
	变量 密码 : 文本
	变量 句柄 : 文本?
	
	变量 网络 : 网络工具
	
	事件 网络:取网页源码结束(结果 : 文本,内容 : 字节[],cookie : 文本)
		句柄 = 结果
		如果 结果=="" 或 (结果?"失败") 则
			登录失败("帐号/密码错误")
		否则
			登录成功(结果)
		结束 如果
	结束 事件

	事件 网络:取网页源码失败()
		登录失败("网络错误")
	结束 事件
	
	方法 登录(name : 文本, pass : 文本)
		订阅事件 网络
		网络.取网页源码(代码片段.网址 + "?action=login&name=" + name + "&pass=" + pass)
	结束 方法
	
	定义事件 登录成功(token : 文本)
	定义事件 登录失败(token : 文本)
结束 类